home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / gnu / m4-1_0_3.lha / m4-1.0.3 / checks / get_them < prev    next >
Text File  |  1992-11-17  |  1KB  |  69 lines

  1. #!/bin/sh
  2. # Extract all examples from the manual source.
  3. # Copyright (C) 1992 Free Software Foundation, Inc.
  4.  
  5. # This script is for use with GNU awk.
  6.  
  7. FILE=${1-/dev/null}
  8.  
  9. $AWK '
  10.  
  11. BEGIN {
  12.   node = "";
  13.   seq = -1;
  14.   count = 0;
  15.   file = "NONE";
  16. }
  17.  
  18. /^@node / {
  19.   if (seq > 0)
  20.     printf(" --  %d file%s", seq, seq == 1 ? "" : "s");
  21.   if (seq >= 0)
  22.     printf("\n");
  23.  
  24.   split($0, tmp, ",");
  25.   node = substr(tmp[1], 7);
  26.   if (length(node) > 11)
  27.     printf("Node: %s - truncated", node);
  28.   else
  29.     printf("Node: %s ", node);
  30.   gsub(" ", "_", node);
  31.   node = tolower(substr(node, 1, 11));
  32.   seq = 0;
  33. }
  34.  
  35. /^@comment ignore$/ {
  36.   getline;
  37.   next;
  38. }
  39.  
  40. /^@example$/, /^@end example$/ {
  41.   if (seq < 0)
  42.     next;
  43.   if ($0 ~ /^@example$/) {
  44.     if (count > 0)
  45.       close (file);
  46.     seq++;
  47.     count++;
  48.     file = sprintf("%02d.%s", count, node);
  49.     printf("dnl %s:%d: Origin of test\n", FILENAME, NR) > file;
  50.     next;
  51.   }
  52.   if ($0 ~ /^@end example$/) {
  53.     next;
  54.   }
  55.   if ($0 ~ /^\^D$/)
  56.     next;
  57.   if ($0 ~ /^@result{}/ || $0 ~ /^@error{}/)
  58.     prefix = "dnl ";
  59.   else
  60.     prefix = "";
  61.   gsub("@@", "@", $0);
  62.   printf("%s%s\n", prefix, $0) >> file;
  63. }
  64.  
  65. END {
  66.   printf("\n");
  67. }
  68. ' $FILE
  69.